 
package com.xbongbong.paas.pojo.dto;

import com.xbongbong.paas.domain.entity.ext.ConditionsEntityExt;
import com.xbongbong.paas.domain.entity.ext.FieldPermissionEntityExt;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* @author wufeng
* @time 2018-08-13 10:41:00
*/
@Getter
@Setter
@ToString
public class ProcessTemplateNodeUpdateDTO implements Serializable {

	/** Comment for <code>serialVersionUID</code> */
	private static final long serialVersionUID = 3629215749969801569L;

	//========== properties ==========

	/**
	* 节点id 用于更新
	*/
	private Long id;

	/**
	* 节点类型，1.开始节点，2.结束节点，3.流程节点，4.抄送节点
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.type.NotNull}")
	private Integer type;
	/**
	* 节点名称
	*/
	@NotBlank(message = "{dto.msg.processTemplateNodeUpdate.name.NotBlank}")
	@Length(max = 20, message = "{dto.msg.processTemplateNodeUpdate.name.Length}")
	private String name;

	/**
	 * 前端唯一标识
	 */
	@NotBlank(message = "{dto.msg.processTemplateNodeUpdate.uid.NotBlank}")
	private String uid;
	/**
	* 节点负责人
	*/
	private List<OptionalRangeDTO> mainUserList;
	/**
	* 节点抄送人
	*/
	private List<OptionalRangeDTO>  ccUserList;
	/**
	 * 流程节点是否启用抄送，如果启用，则抄送人保存在ccUser中
	 */
	private Integer enableCCFlag;
	/**
	* 是否必填审批意见
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.opinionFlag.NotNull}")
	private Integer opinionFlag;
	/**
	* 是否启用，1启用，0不启用
	*/
	private Integer enable;
	/**
	* 创建者id
	*/
	private String creatorId;
	/**
	* 是否开启提交（1：开启；0：不开启）
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.commitFlag.NotNull}")
	private Integer commitFlag;
	/**
	* 提交文案
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.commitText.NotNull}")
	private String commitText;
	/**
	* 是否开启暂存（1：开启；0：不开启）
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.storageFlag.NotNull}")
	private Integer storageFlag;
	/**
	* 暂存文案
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.storageText.NotNull}")
	private String storageText;
	/**
	* 是否开启提交并打印（1：开启；0：不开启）
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.commitPrintFlag.NotNull}")
	private Integer commitPrintFlag;
	/**
	* 提交并打印文案
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.commitPrintText.NotNull}")
	private String commitPrintText;
	/**
	* 是否开启回退（1：开启；0：不开启）
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.backFlag.NotNull}")
	private Integer backFlag;

	/**
	 * 回退类型
	 */
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.backType.NotNull}")
	private Integer backType;
	/**
	* 回退文案
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.backText.NotNull}")
	private String backText;
	/**
	* 回退节点["xx", "xx"]
	*/
	private List<Long> backNodeList;
	/**
	* 是否开启转交（1：开启；0：不开启）
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.transferFlag.NotNull}")
	private Integer transferFlag;
	/**
	* 转交文案
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.transferText.NotNull}")
	private String transferText;
	/**
	* 转交人
	*/
	private List<OptionalRangeDTO> transferUserList;
	/**
	* 是否开启结束流程（1：开启；0：不开启）
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.endFlag.NotNull}")
	private Integer endFlag;
	/**
	 * 字段权限
	 */
	private Map<String, FieldPermissionEntityExt> fieldPermissionMap;
	/**
	* 结束流程文案
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.endText.NotNull}")
	private String endText;
	/**
	* 节点提交验证，1所有数据均可提交，2满足条件的数据才可提交，具体条件参考验证条件字段
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.commitVerifyFlag.NotNull}")
	private Integer commitVerifyFlag;
	/**
	* 会签/或签，1或签(任意负责人提交后进入下一节点), 2会签(所有负责人提交后进入下一节点)
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.signType.NotNull}")
	private Integer signType;
	/**
	* 超时处理
	*/
	private String timeoutHandle;
	/**
	* 打印模板id/抄送打印模板id
	*/
	private Long printTemplateId;
	/**
	* 是否开启抄送打印（1：开启；0：不开启）
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.ccPrintFlag.NotNull}")
	private Integer ccPrintFlag;
	/**
	* 坐标x
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.x.NotNull}")
	private Double x;
	/**
	* 坐标y
	*/
	@NotNull(message = "{dto.msg.processTemplateNodeUpdate.y.NotNull}")
	private Double y;
	/**
	 * 新模板用 上级节点id
	 */
	private String prevId;
	/**
	 * 新模板用 条件优先级
	 */
	private Integer priority;
	/**
	 * 流转条件类型,1使用自定义流转条件，2使用else条件
	 */
	private Integer conditionType;
	/**
	 * 流转条件 [{
	 *                 "attr" : "", // 字段id
	 *                 "fieldType" : "text", // 属性/字段
	 *                 "symbol" : "equal", // 判断条件 equal：等于 noEqual 不等于：empty: 为空；noEmpty：不为空；like：包含任意一个；noLike：不包含任意一个；in：等于任意一个；
	 *                                     // noIn：不等于任意一个；greaterEqual：大于等于；lessEqual：小于等于；range：选择范围
	 *                 "value" : "1234" // 判断参数
	 *             }]
	 */
	private String condition;

	private List<ConditionsEntityExt> conditions;

	private String wrapperId;

	public ProcessTemplateNodeUpdateDTO(){
		backNodeList = new ArrayList<>();
		transferUserList = new ArrayList<>();
		fieldPermissionMap = new HashMap<>();
	}

}

